Estoy tratando de ejecutar este comando:
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch filename.js' --prune-empty --tag-name-filter cat -- --allpero sigo recibiendo este error:
fatal: ambiguous argument 'rm': unknown revision or path not in the working tree . Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]'Depende del caparazón que estés usando.
En Windows, con msysgit por ejemplo, consulte el problema 477 :
Las comillas simples no tienen un significado especial con CMD. No espere que funcionen igual que con un shell POSIX. Llame a filter-branch así:
git filter-branch --commit-filter "GIT_COMMITTER_NAME=void GIT_AUTHOR_NAME=void GIT_COMMITTER_EMAIL=just.a.test@kernel.org GIT_AUTHOR_EMAIL=just.a.test@kernel.org; git commit-tree \"$@\"" HEADMúltiples líneas:
git filter-branch --commit-filter "GIT_COMMITTER_NAME=void \ GIT_AUTHOR_NAME=void \ GIT_COMMITTER_EMAIL=just.a.test@kernel.org \ GIT_AUTHOR_EMAIL=just.a.test@kernel.org; \ git commit-tree \"$@\"" HEAD Como se menciona en " ¿Cómo pasar una lista de archivos generada mediante programación a git filter-branch ? "
Cada argumento para los diversos
...-filtersdebe ser una sola cadena. Esa cadena se guarda como una variable de shell.
Así que asegúrese de que 'git rm --cached --ignore-unmatch filename.js' se considere una cadena en el shell en el que se encuentra.
Como señala Constantine Ketskalo en los comentarios :
Windows 10, PyCharm, GitPython, el mismo comando que en cuestión.
¡Simplemente cambió'a"dentro de la cadena y funcionó!
En Windows, debe usar comillas dobles " en lugar de simples '